package modelo;

import java.util.ArrayList;
import java.util.Random;

import mapper.AdmPersistenciaRodillo;

public class Rodillo {
	private static long ultimoID = 0;

	private long id;
	private Integer idTragamonedas; 
	private Integer posicion;  
	private ArrayList<Casilla> listaCasillas;
	
	public Rodillo(int idTragamonedas, int posicion) {
		this.setId(getProximoID());
		this.setIdTragamonedas(idTragamonedas);
		this.setPosicion(posicion);
	}
	
	public Rodillo(int idRodillo, int idTragamonedas, int posicion) {
		this.setId(idRodillo);
		this.setIdTragamonedas(idTragamonedas);
		this.setPosicion(posicion);
	}
	
	public boolean esRodillo(long idRodillo) {
		return this.id == idRodillo;
	}
	
	public void addCasilla(Casilla casilla) {
		if (casilla!=null) {
			listaCasillas.add(casilla);
		}
	}
	
	public void eliminarCasilla(Casilla casilla) {
		listaCasillas.remove(casilla);
	}
	
	public Casilla getCasillaRandom() {
		if (listaCasillas.size()>0) {
			Random r = new Random();
			int i = r.nextInt(listaCasillas.size());
			return listaCasillas.get(i);
		} else {
			return null;
		}
	}

	public static long getUltimoID() {
		return ultimoID;
	}
	public static void setUltimoID(long ultimoID) {
		Rodillo.ultimoID = ultimoID;
	}
	public static long getProximoID() {
		return ++ultimoID;
	}
	public long getId() {
		return id;
	}
	public Integer getIdTragamonedas() {
		return idTragamonedas;
	}

	public void setIdTragamonedas(Integer idTragamonedas) {
		this.idTragamonedas = idTragamonedas;
	}
	public void setId(long id) {
		this.id = id;
	}
	public Integer getPosicion() {
		return posicion;
	}
	public void setPosicion(Integer posicion) {
		this.posicion = posicion;
	}
	public ArrayList<Casilla> getListaCasillas() {
		return listaCasillas;
	}
	public void setListaCasillas(ArrayList<Casilla> listaCasillas) {
		this.listaCasillas = listaCasillas;
	}
	
	public void insertarDatos(){
		AdmPersistenciaRodillo.getInstancia().insertar(this);
	}
	public void actualizarDatos(){
		AdmPersistenciaRodillo.getInstancia().actualizar(this);
	}
	public void eliminarDatos(){
		AdmPersistenciaRodillo.getInstancia().borrar(this);	
	}
	
}
